function salvar(){
	
	run_waitMe();
	
	limparMensagem();
	desabilitaBotoes();
	
	$('#nestable-output').val(JSON.stringify($('#nestable').nestable('serialize')));
	$('#nestable-output2').val(JSON.stringify($('#nestable2').nestable('serialize')));

	$.ajax({
        url:  basepath+"admin/vincular_perfil_menu/salvar",
        data: $('#formVinculo').serialize(),
        type: 'POST',
        async: false,
        success: function(retorno){
        	
        	stop_waitMe();
        	
        	var obj = jQuery.parseJSON( retorno );
        	
    		if (obj.sucesso == true) {
    			
    			habilitaBotoes();
    			
    			if (obj.refresh == true){
    				
    				// Creating cookie
        			$.cookie('mensagem', 'sucesso', { path: '/' });  
        			
    				//Redirecionando para a tela de pesquisa
    				window.parent.location = basepath+"admin/vincular_perfil_menu";
    				
    			}else{
    				$(".resultado").html("");
    				$(".resultado").hide();
    				
    				//Rola a página para cima
    				$('html, body').animate({ scrollTop: 0 }, 'slow');
    				
    				// Mostra mensagem
    				$("#mensagem").show();
    				$("#mensagem").prepend('<div class="row alert '+obj.tipoMensagem+' alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+obj.mensagem+'</div>');
    			}
    			
    		} else{
    			
    			habilitaBotoesConfirma();
    			
    			//Rola a página para cima
    			$('html, body').animate({ scrollTop: 0 }, 'slow');
    			
    			// Mostra mensagem
    			$("#mensagem").show();
    			$("#mensagem").prepend('<div class="row alert '+obj.tipoMensagem+' alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+obj.mensagem+'</div>');
    		}
    		
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        	stop_waitMe();
        	
        	habilitaBotoesConfirma();
        	
        	//Rola a página para cima
			$('html, body').animate({ scrollTop: 0 }, 'slow');
			
			// Mostra mensagem
			$("#mensagem").show();
			$("#mensagem").prepend('<div class="row alert alert-danger alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>Ocorreu um erro. Tente novamente mais tarde!</div>');
        }
    });
}

function pesquisar(){
	
	run_waitMe();
	
	limparMensagem();
	desabilitaBotoes();
	
	$.ajax({
        url:  basepath+"admin/vincular_perfil_menu/pesquisar",
        data: $('#formPesquisaVinculo').serialize(),
        type: 'POST',
        async: false,
        success: function(retorno){
        	
        	stop_waitMe();
        	
        	habilitaBotoes();
        	
        	var obj = jQuery.parseJSON( retorno );
        	
        	if (obj.sucesso == true) {
        		
        		$(".resultado").html(obj.html);
    			
    			limparCampos();
    			limparformPesquisaVinculo();
    			desabilitaBotoesPesquisa();
    			
    			var updateOutput = function (e) {
                    var list = e.length ? e : $(e.target),
                            output = list.data('output');
                    if (window.JSON) {
                        output.val(window.JSON.stringify(list.nestable('serialize')));
                    } else {
                        output.val('JSON browser support required for this demo.');
                    }
                };
    			
    			 // activate Nestable
    			$('#nestable').nestable({
    				maxDepth:2,
    				group: 1
    			}).on('change', updateOutput);
    				
    			$('#nestable2').nestable({
    				maxDepth:1,
    				group: 1
    			}).on('change', updateOutput);
    			
    			// output initial serialised data
                updateOutput($('#nestable').data('output', $('#nestable-output')));
                updateOutput($('#nestable2').data('output', $('#nestable-output2')));
    			
    			$("#buttonCancelar").bind('click',function(e) {
    				// Prevent form submission
    		        e.preventDefault();
    		        
    		        habilitaBotoes();
    		        $(".resultado").html("");
    			});	
    			
    			$("#buttonSalvar").bind('click',function(e) {
    				// Prevent form submission
    		        e.preventDefault();
    				
    				salvar();
    			});
    			
    			$(".resultado").show();
    			
        	}else{
        		$(".resultado").html("");
        		$(".resultado").hide();
        		
        		//Rola a página para cima
        		$('html, body').animate({ scrollTop: 0 }, 'slow');
        		
        		// Mostra mensagem
        		$("#mensagem").show();
        		$("#mensagem").prepend('<div class="row alert '+obj.tipoMensagem+' alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+obj.mensagem+'</div>');
        		
        	}
        	
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        	stop_waitMe();
        	
        	habilitaBotoes();
        	
        	//Rola a página para cima
			$('html, body').animate({ scrollTop: 0 }, 'slow');
        	
			// Mostra mensagem
			$("#mensagem").show();
			$("#mensagem").prepend('<div class="row alert alert-danger alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>Ocorreu um erro. Tente novamente mais tarde!</div>');
        }
    });
}

function limparCampos(){
	$('#formPesquisaVinculo').each (function(){
		this.reset();
    });
      
	$("#perfil").select2("val", "");
}

function limparformPesquisaVinculo(){
	$('#formPesquisaVinculo').data('formValidation').resetForm();
}

function habilitaBotoes(){
	// Habilita o botão novamente
	$("#buttonVoltar").removeAttr("disabled");
	$("#buttonLimpar").removeAttr("disabled");
	$("#buttonPesquisar").removeAttr("disabled");
	
	$("#buttonCancelar").removeAttr("disabled");
	$("#buttonSalvar").removeAttr("disabled");
	
	$("#perfil").removeAttr("disabled");
}

function habilitaBotoesConfirma(){
	// Habilita o botão novamente
	$("#buttonCancelar").removeAttr("disabled");
	$("#buttonSalvar").removeAttr("disabled");
}

function desabilitaBotoes(){
	// Desabilita os botões
	$("#buttonVoltar").attr("disabled", "disabled");
	$("#buttonLimpar").attr("disabled", "disabled");
	$("#buttonPesquisar").attr("disabled", "disabled");
	
	$("#buttonCancelar").attr("disabled", "disabled");
	$("#buttonSalvar").attr("disabled", "disabled");
}

function desabilitaBotoesPesquisa(){
	// Desabilita os botões
	$("#buttonVoltar").attr("disabled", "disabled");
	$("#buttonLimpar").attr("disabled", "disabled");
	$("#buttonPesquisar").attr("disabled", "disabled");
	
	$("#perfil").attr("disabled", "disabled");
	
}

function limparMensagem(){
	// Limpando dados da mensagem
	$("#mensagem").hide();
	$("#mensagem").html("");
}

function formPesquisaVinculo() {
	
	$('#formPesquisaVinculo').formValidation({
		framework: 'bootstrap',
        icon: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        button: {
		    // The disabled class
		    disabled: ''
		},
        fields : {
			perfil: {
                validators: {
                	notEmpty : {
						message : 'Perfil deve ser selecionado para realizar a pesquisa.'
					}
                }
            }
		}
	})	
	.on('success.form.fv', function(e) {
		// Prevent form submission		
        e.preventDefault();
        
		pesquisar();
    });
}

function verificandoMensagem(){
	
	limparMensagem();
	
	var msgn = $.cookie('mensagem');
	
	if (msgn == "sucesso"){
		
		//Rola a página para cima
		$('html, body').animate({ scrollTop: 0 }, 'slow');
		
		// Mostra mensagem
		$("#mensagem").show();
		$("#mensagem").prepend('<div class="row alert alert-success alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>Vinculo realizado com sucesso!</div>');
		
	}
	
	//Delete cookie
	$.removeCookie('mensagem', { path: '/' });
}


function inicializandoComponentes(){
	
	$("#perfil").select2({
		placeholder: "Selecione",
		allowClear: true
	});
	
	$("#buttonVoltar").bind('click',function(e) {
		// Prevent form submission
        e.preventDefault();
        
        window.parent.location = basepath+"admin";
	});	
	
	$("#buttonLimpar").bind('click',function(e) {
		// Prevent form submission
        e.preventDefault();
        
		limparCampos();
		limparformPesquisaVinculo();
	});	
}
	

function init() {
	
	inicializandoComponentes();
	verificandoMensagem();
	formPesquisaVinculo();
}

$(document).ready(init);